1. Field of the Invention
The present invention relates generally to computer graphics and animation systems and, more particularly, to graphics rendering hardware.
2. Related Art
Computer graphics systems are commonly used for displaying two- and three-dimensional graphics representations of objects on a two-dimensional video display screen. Current computer graphics systems provide highly detailed representations and are used in a variety of applications.
In a typical computer graphics system an object or model to be represented on the display screen is broken down into graphics primitives. Primitives are basic components of a graphics display and may include, for example, points, lines, quadrilaterals, triangle strips and polygons. Typically, a hardware/software scheme is implemented to render, or draw, the graphics primitives that represent a view of one or more objects being represented on the display screen.
Generally, the primitives of the three-dimensional object to be rendered are defined by a host computer in terms of primitive data. For example, when the primitive is a triangle, the host computer may define the primitives in terms of the X, Y, Z and W coordinates of its vertices, as well as the red, green and blue and alpha (R, G, B and .alpha.) color values of each vertex. Additional primitive data may be used in specific applications. Rendering hardware interpolates the primitive data to compute the display screen pixels that represent each primitive, and the R, G and B color values for each pixel.
The basic components of a computer graphics system typically include a geometry accelerator, a rasterizer and a frame buffer. The system may also include other hardware such as texture mapping hardware. The geometry accelerator receives primitive data from the host computer that defines the primitives that make up the model view to be displayed. The geometry accelerator performs transformations on the primitive data and performs such functions as lighting, clipping and plane equation calculations for each primitive. The output of the geometry accelerator, referred to as rendering data, is used by the rasterizer and the texture mapping hardware to generate final screen coordinate and color data for each pixel in each primitive. The pixel data from the rasterizer and the pixel data from the texture mapping hardware, if available, are combined and stored in the frame buffer for display on the video display screen.
The volume of data transferred through the host computer and the graphics hardware is extremely large. For example, the data for a single quadrilateral may be on the order of 64 words of 32 bits each. As a result, various techniques have been employed to improve the performance of graphics systems. Due to the large number of at least partially independent operations which are performed in rendering a graphics image, proposals have been made to use some form of parallel architecture for graphics systems. One common approach to achieving parallelism in computer graphics processing is a technique known as pipelining. In such an approach, the individual processors are, in effect, connected in series in an assembly-line configuration. One processor performs a first set of operations on one chunk of data, and then passes that chunk along to another processor which performs a second set of operations, while at the same time the first processor performs the first set of operations again on another chunk of data.
In addition to providing parallelism among the graphics system subsystems, approaches to achieving parallelism within each of the subsystems is also desirable. One such subsystem that has received recent attention is the geometry accelerator because the operations of the geometry accelerator are highly computationally intensive. One frame of a three-dimensional graphics display may include on the order of hundreds of thousands of primitives. To achieve state-of-the-art performance, the geometry accelerator may be required to perform several hundred million floating point calculations per second.
Although the above parallelism is provided with the intent of increasing performance, considerable processing and communication bandwidth is dedicated to providing the parallel geometry accelerators with the necessary primitive data to enable individual geometry accelerators to properly render the primitives. This presents the graphics system designer with many tradeoffs with respect to how the primitive data is distributed in a multiple geometry accelerator architecture.